﻿namespace Shot.Presentation.Foundation
{
    /// <summary>
    /// Interface for a Presenter in Shot's MVP (Model, View, Presenter) pattern. A presenter is in charge
    /// of maintaining a Scope, and presenting a type of content to the user.
    /// </summary>
    public interface IPresenter
    {
        /// <summary>
        /// Client instance
        /// </summary>
        AppInstance Instance { get; set; }

        /// <summary>
        /// Setup presentation prior to present
        /// </summary>
        void Before();

        /// <summary>
        /// Present content
        /// </summary>
        void Present();

        /// <summary>
        /// Tear down presenter
        /// </summary>
        void After();
    }
}
